var oTableDispositivos;

$(document).ready(function() {
    
       /* Listener para evento click en filas del grid, intercambia la clase selected */
	$('#tablaDispositivos tr:not(:first)').click( function() {
            if ($(this).hasClass('row_selected'))
                $(this).removeClass('row_selected');
            else
                $(this).addClass('row_selected');
	} );
        
	oTableDispositivos = $('#tablaDispositivos').dataTable( {
        "sPaginationType": "bootstrap",
        "sDom": "R<'row'<'col-xs-6'>r<'col-xs-6'f>>t<'row'<'col-xs-6'i><'col-xs-6'p>>",
        "iDisplayLength": 9,
        "bAutoWidth": true,
        "aoColumnDefs": [
            {"sClass": "text-center hidden-xs","bVisible": false,"sTitle": "ID", "aTargets": [0]},
            {"sClass": "text-center ","sTitle": "Serie", "aTargets": [1]},
            {"sClass": "text-left hidden-xs","sTitle": "Asignado A", "aTargets": [2]},
            {"sClass": "text-center hidden-xs","sTitle": "Teléfono", "aTargets": [3]},
            {"sClass": "text-center hidden-xs","sTitle": "Fecha Alta", "aTargets": [4]},
            {"sClass": "text-center hidden-xs","sTitle": "Minutos", "aTargets": [5]},
            {"sClass": "text-center ","sTitle": "", "aTargets": [6]}
            
         ],
        "oLanguage": {
             "sEmptyTable": "No hay datos disponibles.",
             "sInfo": "Se muestran _START_ a _END_ de _TOTAL_ dispositivos.",
             "sInfoEmpty": "Se muestran 0 a 0 de 0 dispositivos.",
             "sInfoFiltered": "(Filtrados de _MAX_ total de dispositivos)",
             "sLengthMenu": "Se muestran _MENU_ dispositivos",
             "sLoadingRecords": "Cargando informaci&oacute;n...",
             "sProcessing": "Procesando...",
             "sSearch": "Buscar:",
             "sZeroRecords": "No se encuentran coincidencias"
            }
      });
});



/*Devuelve las filas seleccionadas del grid */
function fnGetSelected( oTableLocal )
{
    var aReturn = new Array();
    var aTrs = oTableLocal.fnGetNodes();
    for ( var i=0 ; i<aTrs.length ; i++ )
    {
            if ( $(aTrs[i]).hasClass('row_selected') )
            {
                    aReturn.push( aTrs[i] );
            }
    }
    return aReturn;
}

/*
 * Deselecciona las filas del grid que hayan sido seleccionadas.
 */
function fnRemoveSelected(oTableLocal){
    var aTrs = oTableLocal.fnGetNodes();
    for ( var i=0 ; i<aTrs.length ; i++ )
    {
          $(aTrs[i]).removeClass('row_selected');
    }
}

/*
 * Modfica los datos en una fila del grid, solo modifica las celdas que pueden ser modificadas: AsignadoA y minutos
 */
function fnModifyRow(disp) {
    oTableDispositivos.fnUpdate( disp.asignado.toUpperCase(),parseInt(disp.row)-1,1);
    oTableDispositivos.fnUpdate( "<center>"+disp.minutos+"</center>",parseInt(disp.row)-1,4);
    //oTableDispositivos.fnDraw();
}

function fnAddRow(disp)
{
    var f = new Date();
    var fecha = (f.getFullYear() + "-" + (f.getMonth() +1) + "-" + f.getDate());
    var table=document.getElementById("tablaDispositivos");
    var row=table.insertRow(-1);
    var cell1=row.insertCell(0);
    var cell2=row.insertCell(1);
    var cell3=row.insertCell(2);
    var cell4=row.insertCell(3);
    var cell5=row.insertCell(4);
    var cell6=row.insertCell(5);
    cell1.innerHTML="<center>"+disp.serie+"</center>";
    cell2.innerHTML=disp.asignado.toUpperCase();
    cell3.innerHTML="<center>"+disp.telefono+"</center>";
    cell4.innerHTML="<center>"+fecha+"</center>";
    cell5.innerHTML="<center>"+disp.minutos+"</center>";
    cell6.innerHTML="<center><a class='btn btn-info btn-xs' role='button' href='#' onclick='mostrar_punto('" + disp.iddispositivo +"')' title='Último Punto'><i class='glyphicon glyphicon-map-marker'></i></a>"
                    + "<a class='btn btn-success btn-xs' role='button' href='#panelruta' data-toggle='modal' onclick='setId('" + disp.idispositivo +"')' title='Tabla Posiciones'><i class='glyphicon glyphicon-list-alt'></i></a>"
                    + "</center>";
   
}


/*
 * Agrega una fila de forma dinamica al dataTable
 
function fnAddRow(disp){
    var f = new Date();
    var fecha = (f.getFullYear() + "-" + (f.getMonth() +1) + "-" + f.getDate());
    $('#tablaDispositivos').dataTable().fnAddData( [
        disp.iddispositivo,
        disp.serie,
        disp.asignado,
        disp.telefono,
        fecha,
        disp.minutos,
        "<center><a class='btn btn-info btn-xs' role='button' href='#' onclick='mostrar_punto('" + disp.iddispositivo +"')' title='Último Punto'><i class='glyphicon glyphicon-map-marker'></i></a>"
            + "<a class='btn btn-success btn-xs' role='button' href='#panelruta' data-toggle='modal' onclick='setId('" + disp.idispositivo +"')' title='Tabla Posiciones'><i class='glyphicon glyphicon-list-alt'></i></a>"
         + "</center>"
     ] );
}*/

function validaSerie(){
    var serie = $("#serie").val();
    $.ajax({
        type:"POST",
        url:"dispositivos/validaSerie",
        dataType:"html",
        data:{noserie:serie},
        beforeSend:function(){
        },
        success:function(data){
            var info = JSON.parse(data);
            if (info.result > 0)
               { 
                   var serie = document.getElementById('serie');
                   serie.setCustomValidity("Número de serie ya resgistrado.");
                }
                else{
                    var serie = document.getElementById('serie');
                    serie.setCustomValidity("");
                }
        }
    })
}

function eliminar_dispositivos(){
    var selectos = fnGetSelected(oTableDispositivos);
    var aEliminar = [];
    for(i=0; i<selectos.length; i++)
        aEliminar.push(selectos[i].id);
    if (aEliminar.length > 0)
        {
            bootbox.confirm("¿Confirma que desea eliminar los dispositivos seleccionados?", function(result) {
            if (result)
                {
                    var myJsonString = JSON.stringify(aEliminar);
                    $.ajax({
                        type:"GET",
                        url:"dispositivos/eliminar",
                        dataType:"html",
                        data:{id: myJsonString},
                        beforeSend:function(){
                        },
                        success:function(data){
                            var result = JSON.parse(data);
                            if (result.rows)
                               { 
                                   for(i=0; i<selectos.length; i++)
                                        oTableDispositivos.fnDeleteRow(selectos[i]);
                                    showNotify('Eliminar Dispositivo','El dispositivo se eliminó correctamente.','correcto');
                                }
                                else
                                    showNotify('Eliminar Dispositivo','Ocurrio un error al eliminar al dispositivo.','error');
                        }
                    });
                }   
            });
        }
     else
         {
             showNotify("Eliminar Dispositivos","Debe seleccionar al menos un dispositivo.",'alerta');
         }
                
 }
 
 function modificarDispositivo(){
     var valores = $("#agregaDispositivo").serializeObject();
     $.ajax({
        type:"POST",
        url:"dispositivos/modificar",
        dataType:"html",
        data:valores,
        beforeSend:function(){
        },
        success:function(data){
            var info = JSON.parse(data);
            if (info.rows > 0)
               { 
                   showNotify('Modificar Dispositivo','El dispositivo se modificó correctamente.','correcto');
                   fnModifyRow(valores);
                   $("#modalDispositivos").modal("hide");
                   fnRemoveSelected(oTableDispositivos);
                }
                else{
                    showNotify('Modificar Dispositivo','Ocurrio un error al modificar el dispositivo.','error');
                     fnRemoveSelected(oTableDispositivos);
                }
            
        }
    })
 }
 
 function agregar_dispositivo(){
    $('#serie').attr("disabled", false);
    $('#macwifi').attr("disabled", false);
    var valores = $("#agregaDispositivo").serializeObject();
     $.ajax({
        type:"POST",
        url:"dispositivos/agregar",
        dataType:"html",
        data:valores,
        beforeSend:function(){
        },
        success:function(data){
            var info = JSON.parse(data);
            if (info.result > 0)
               { 
                   showNotify('Agregar Dispositivo','El dispositivo se agregó correctamente.','correcto');
                   fnAddRow(valores);
                   $("#modalDispositivos").modal("hide");
                   //dibujaTabla();
                   //oTableDispositivos.fnDestroy();
                   //oTableDispositivos.fnDraw(true);
                }
                else{
                    showNotify('Agregar Dispositivo','Ocurrio un error al insertar el dispositivo.','error');
                    setTimeout(function(){
                     $("#modalDispositivos").modal("hide");
                      location.reload();
                  },3000);
                }
            
        }
    })
             
 }
 
 function getDispositivo(){
    var selectos = fnGetSelected( oTableDispositivos );
    var aModificar = [];
    for(i=0; i<selectos.length; i++)
        aModificar.push(selectos[i].id);
    if (aModificar.length == 1 )
        {
            document.getElementById('agregaDispositivo').action = "javascript:modificarDispositivo();";
            var myJsonString = JSON.parse(aModificar);
            $.ajax({
                type:"POST",
                url:"dispositivos/get_dispositivo",
                dataType:"html",
                data:{id: myJsonString},
                beforeSend:function(){
                },
                success:function(data){
                    var dispositivo = JSON.parse(data);
                     $('#iddispositivo').val(dispositivo.iddispositivo);
                     $('#row').val(selectos[0].rowIndex)
                     $('#serie').val(dispositivo.serie);
                     $('#serie').attr("disabled", true);
                     $('#telefono').val(dispositivo.numtelefono);
                     $('#marca').val(dispositivo.marca);
                     $('#sistemaop').val(dispositivo.sisoperativo);
                     $('#macwifi').val(dispositivo.macwifi);
                     $('#macwifi').attr("disabled", true);
                     $('#minutos').val(dispositivo.minutos);
                     $('#asignado').val(dispositivo.asignadoa);
                     $("#modalDispositivos").modal("show");                     
                }
            })
        }
    else
        {
          showNotify("Modificar Dispositivos","Debe seleccionar un dispositivo.",'alerta');
        } 
}

function limpiarModalDispositivos(){
    $('#modalDispositivos')[0].reset();
}


 function mostrar_punto(id){
    var aModificar = [];
    if (!id){
        var selectos = fnGetSelected( oTableDispositivos );
        var aModificar = [];
        for(i=0; i<selectos.length; i++)
            aModificar.push(selectos[i].id);
    	if(aModificar.length>=1)
    		window.open('mapa?id='+aModificar,'_blank','width=900px,height=450px'); 
    	else
    		showNotify("Mostrar Puntos","Debe seleccionar al menos un dispositivo.",'alerta');         
        }
     else
        {        
        	window.open('mapa?id='+id,'_blank','width=900px,height=450px');
        }
}

 function tabla_puntos(){
    var id='';
    id=document.getElementById("idDispositivo").value;
    var fechaI=document.getElementById('inputFechaIni').value;
    var fechaF=document.getElementById('inputFechaTer').value;
    if(validarFecha()) 
        window.open('tabla?id='+ id + '&fechaI='+ fechaI + '&fechaF=' + fechaF,'_blank','width=900px,height=450px');
    else
        showNotify("Mostrar Reporte","la fecha final no puede ser menor a la fecha inicial",'alerta'); 
}

function setId(id){    
    $('#panelrutaForm')[0].reset();
    var selectos = fnGetSelected( oTableDispositivos );
    var aModificar = [];
    for(i=0; i<selectos.length; i++)
        aModificar.push(selectos[i].id);
    if (id==0){       
      if(aModificar.length==1){
          id=aModificar;
          var inp= document.getElementById("iddispositivo");
          inp.value=id;
          $("#panelruta").modal("show");
      }else if(aModificar.length==0){          
          showNotify("Mostrar Reporte","Selecionar un dispositivo",'alerta'); 
      }else{
          showNotify("Mostrar Reporte","Seleccion multiple no permitida",'alerta');
      }
    }else{
      var inp= document.getElementById("iddispositivo");
      inp.value=id;
    }
   }
   
  function validarFecha(){  
    var fechaInicio = $('#inputFechaIni').val();
    fechaInicio = Date.parse(fechaInicio);
    var fechaFinal = $('#inputFechaTer').val();
    fechaFinal = Date.parse(fechaFinal);
    if(fechaInicio <= fechaFinal){
         return true;         
    }else{
         return false;    
    }
  }
  
  
   function mostrar_ruta(){
       var id='';
        id=document.getElementById("iddispositivo").value;
        var fechaI=document.getElementById('inputFechaIni').value;
        var fechaF=document.getElementById('inputFechaTer').value;
        if(validarFecha()) 
   	   window.open('mapa/drawRuta?id='+ id + '&fechaI='+ fechaI + '&fechaF=' + fechaF,'_blank','width=900px,height=450px');
        else
           showNotify("Mostrar Reporte","la fecha final no puede ser menor a la fecha inicial",'alerta'); 
}
   
   

